package tools

import (
	"fmt"
	"os"
	"path/filepath"

	"github.com/mholt/archiver/v3"
)

// # 解压到当前目录
// yt unzip example.zip .
// # 解压到指定目录
// yt unzip backup.tar.gz /tmp/backup
func (t Command) Unzip() {
	if len(os.Args) < 4 {
		fmt.Println("参数错误，使用方式: yt unzip [文件路径] [目标目录]")
		return
	}

	sourceFile := os.Args[2]
	targetDir := filepath.Clean(os.Args[3])

	// 检查源文件是否存在
	if _, err := os.Stat(sourceFile); os.IsNotExist(err) {
		fmt.Printf("文件 %s 不存在\n", sourceFile)
		return
	}

	// 创建目标目录
	if err := os.MkdirAll(targetDir, 0755); err != nil {
		fmt.Printf("创建目录失败: %v\n", err)
		return
	}

	// 使用通用解压库处理多种格式
	if err := archiver.Unarchive(sourceFile, targetDir); err != nil {
		fmt.Printf("解压失败: %v\n", err)
		return
	}

	fmt.Printf("成功解压 %s 到 %s\n", sourceFile, targetDir)
}
